package pe.edu.upc.e41a.javasoft.dao;

import java.util.List;
import java.util.Set;

import javax.persistence.TypedQuery;

import pe.edu.upc.e41a.javasoft.domain.Publicacion;
import pe.edu.upc.e41a.javasoft.domain.TipoPersona;
import pe.edu.upc.e41a.javasoft.domain.Transaccion;


public interface PublicacionDao {
    public  void savePublicacion(Publicacion publicacion);
    public  void updatePublicacion(Publicacion publicacion);
    public  void deletePublicacion( Publicacion publicacion);
    
    public Publicacion findPublicacion(Integer codigo);
    
    public TypedQuery<Publicacion> findPublicacionByTituloEquals(String titulo);
    
    public TypedQuery<Publicacion> MostrarPublicacion(Integer IdPublicacion);
    
    public List<Publicacion> findAllPublicacion();
    
    public  List<Publicacion> listarPublicacionPorTituloODescripcion(String cadena) ;
    
    public List<Publicacion> listarPublicacionMasVisitadas();
    
    public List<Publicacion> listarPublicacionMasVendidas();
    
    public List<Publicacion> listarPublicacionPorUsuarioPorEstado(Integer usuarioId, Character estado);
    
    public  TypedQuery<Publicacion> findPublicacionsByTransaccions(List<Transaccion> transaccions);

}
